import { Router } from "uni-cloud-router";
import { InsideErr, util, BaseErr } from "utils";
import config from "./config";
const router = new Router(config);

// 是不是 中间件出错了
function getFunctionErr(message: any): BaseErr {
    if (util.nilValue(message)) {
        return new BaseErr(-70001, "未知错误");
    }
    if (message instanceof BaseErr) {
        return message;
    }
    return new InsideErr(message);
}

exports.main = async (event, context) => {
    try {
        let result: any = await router.serve(event, context);
        let { code, message } = result || {};
        // 如果是中间件 抛出错误, 那么 就会有code字段
        if (!util.nilValue(code) && code !== 0) {
            // 中间件 抛出错了, message 是错误
            return util.resErr(getFunctionErr(message));
        } else {
            // 已经组装好的 响应数据
            return result;
        }
    } catch (e: any) {
        let error = new InsideErr(e);
        return util.resErr(error);
    }
};
